package com.hzzc;

public class Result<T> {

    private int code = EnumResultCode.SUCCESS.getCode();

    private T data;

    private String msg;

    public static <T> Result<T> instance(int code, T data, String msg) {
        return new Result().setCode(code).setData(data).setMsg(msg);
    }

    public static <T> Result<T> success(T data, String msg) {
        return new Result().setCode(EnumResultCode.SUCCESS.getCode()).setData(data).setMsg(msg);
    }

    public static <T> Result<T> error(T data, String msg) {
        return new Result().setCode(EnumResultCode.ERROR.getCode()).setData(data).setMsg(msg);
    }

    public static <T> Result<T> auth(T data, String msg) {
        return new Result().setCode(EnumResultCode.UNAUTH.getCode()).setData(data).setMsg(msg);
    }

    public static <T> Result<T> reject(T data, String msg) {
        return new Result().setCode(EnumResultCode.REJECT.getCode()).setData(data).setMsg(msg);
    }

    public static Result<String> redirect(String data, String msg) {
        return new Result().setCode(EnumResultCode.REDIRECT.getCode()).setData(data).setMsg(msg);
    }

    public int getCode() {
        return code;
    }

    public Result<T> setCode(int code) {
        this.code = code;
        return this;
    }

    public T getData() {
        return data;
    }

    public Result<T> setData(T data) {
        this.data = data;
        return this;
    }

    public String getMsg() {
        return msg;
    }

    public Result<T> setMsg(String msg) {
        this.msg = msg;
        return this;
    }
}
